// 2014-02-01 Tyrghen
//---------------------------------------------
// Usage:
//  [vec] call edt_fnc_respawnVehicle;
//  [vec,120] call edt_fnc_respawnVehicle;
//  [vec,120,4] call edt_fnc_respawnVehicle;
//---------------------------------------------
// Purpose:
// Respawns the given vehicle after it has been either deserted or destroyed.
// You can change the time it takes for it to respawn and whether it has a limited number of respawns or not.
// If you want the unit to never respawn while deserted, just set up an impossible to reach delay.
// 
// Parameters:
// - The vehicle to respawn
// Optional Parameters:
// - The delay in seconds after which it respawns if it's deserted (by default 450 seconds)
// - The max number of respawns for this unit when it is destroyed where deserted respawns do not count (by default infinite)
//
// Returns:
// Nothing
//---------------------------------------------
// Objectif:
// Fait réapparaitre le véhicule donné après qu'il ait été soit déserté, soit détruit.
// Vous pouvez changer le temps qui est nécessaire pour réapparaitre ou si le véhicule n'a droit qu'à un nombre limité de réapparitions.
// Si vous voulez que le véhicule ne réapparaisse jamais quand il est déserté, configurez simplement un délai impossible à atteindre.
//
// Paramètres:
// - Le véhicule à faire réapparaître
// Paramètres optionnels:
// - Le délai après lequel le véhicule réapparaît s'il est déserté (par défaut 450 secondes)
// - Le nombre maximum de fois que le véhicule peut réapparaître s'il est détruit, sans tenir compte des réapparitions s'il est déserté (par défaut, infini)
//
// Renvoie:
// Rien
//---------------------------------------------

//#define __FORCE_TRACE__
//#define __FORCE_DEBUG__
//#define __FORCE_INFO__
#define THIS_FILE "editor\fn_respawnVehicle.sqf"
#include <tmf_constants.h>
#include <tmf_macros.h>

TRACE_1("Start",_this);
TMFPROFILERSTART;

if (isServer) then {
	private ["_params"];
	_params = [];
	if (!IS_ARRAY(_this)) then {
		if (IS_OBJECT(_this)) then {
			_params set [0,_this];
		};
	} else {
		if (count _this > 0) then {
			if (IS_OBJECT((_this select 0))) then {
				_params set [0,_this select 0];
				if (count _this > 1) then {
					if (IS_SCALAR((_this select 1))) then {
						_params set [1,_this select 1];
						if (count _this > 1) then {
							if (IS_SCALAR((_this select 2))) then {
								_params set [2,_this select 2];
							};
						};
					};
				};
			};
		};
	};
	if (count _params > 0) then {
		_params spawn FFUNC(respawnVehicle);
	} else {
		ERROR("Invalid Parameters");
	};
} else {
	TRACE("Not Server");
};
TRACE("End");
TMFPROFILERSTOP;